package leetcode_day._2023._12;

/**
 * 2661.找出叠涂元素
 * 算法: 哈希表
 * 找出每行每列元素在 arr 数组的下标的最大值, 下标最大值的元素表示在涂这块元素时, 该元素所在行(或列)的其他位置都已经涂过颜色了
 * 取这些最大值的最小值
 *
 * @author yezh
 * @date 2023/12/1 15:03
 */
public class _01 {

    public int firstCompleteIndex(int[] arr, int[][] mat) {
        int ans = Integer.MAX_VALUE, m = mat.length, n = mat[0].length;
        int[] idxs = new int[m * n + 1];
        for (int i = 0; i < m * n; i++) idxs[arr[i]] = i;
        for (int i = 0; i < m; i++) {
            int max = idxs[mat[i][0]];
            for (int j = 1; j < n; j++) max = Math.max(max, idxs[mat[i][j]]);
            ans = Math.min(ans, max);
        }
        for (int i = 0; i < n; i++) {
            int max = idxs[mat[0][i]];
            for (int j = 1; j < m; j++) max = Math.max(max, idxs[mat[j][i]]);
            ans = Math.min(ans, max);
        }
        return ans;
    }

}
